package com.northming.daytodo.mapper.todo;

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.northming.daytodo.domain.todo.Todo;
import com.northming.daytodo.domain.todo.TodoInfo;
import com.northming.daytodo.domain.todo.TodoStatus;
/**
 * 
 * <pre>
 * 类名标题: todo mapper
 * 
 * 创建人员：gl
 * 
 * 创建时间：2016年12月31日上午12:12:13
 * 
 * 说明描述: 
 * 
 * </pre>
 */
@Mapper
public interface TodoMapper {
	/**
	 * 
	 * <pre>
	 * 方法说明：insert todo
	 * 
	 * 开发时间：2016年12月31日上午12:12:29
	 * 
	 * 开发人员：gl
	 * 
	 * @param todo
	 * @return int success count
	 * 
	 * </pre>
	 *
	 */
	public int insertTodo(Todo todo);
	/**
	 * 
	 * <pre>
	 * 方法说明：insert todo status
	 * 
	 * 开发时间：2016年12月31日上午12:12:39
	 * 
	 * 开发人员：gl
	 * 
	 * @param todoStatus
	 * @return int success count
	 * 
	 * </pre>
	 *
	 */
	public int insertTodoStatus(TodoStatus todoStatus);
	/**
	 * 
	 * <pre>
	 * 方法说明：get todoinfo list
	 * 
	 * 开发时间：2016年12月31日上午12:13:17
	 * 
	 * 开发人员：gl
	 * 
	 * @param userId
	 * @param date
	 * @param status
	 * @return List<TodoInfo> todoinfo list
	 * 
	 * </pre>
	 *
	 */
	public List<TodoInfo> getTodoInfos(@Param("userId")int userId,@Param("date")String date,@Param("status")int status);
	
	/**
	 * 
	 * <pre>
	 * 方法说明：change todo finish status
	 * 
	 * 开发时间：2016年12月31日上午12:13:35
	 * 
	 * 开发人员：gl
	 * 
	 * @param todoId
	 * @param userId
	 * @param status
	 * @param finishTime
	 * @return int  success count
	 * 
	 * </pre>
	 *
	 */
	public int changeFinish(@Param("todoId")Integer todoId, @Param("userId")Integer userId, @Param("status")Boolean status,@Param("finishTime")String finishTime);
	
	/**
	 * 
	 * <pre>
	 * 方法说明：change todo status (use/delete)
	 * 
	 * 开发时间：2016年12月31日上午12:14:10
	 * 
	 * 开发人员：gl
	 * 
	 * @param todoId
	 * @param userId
	 * @param status
	 * @return int success count
	 * 
	 * </pre>
	 *
	 */
	public int changeStatus(@Param("todoId")Integer todoId, @Param("userId")Integer userId,@Param("status")int status);
	/**
	 * 
	 * <pre>
	 * 方法说明：get todo info 
	 * 
	 * 开发时间：2016年12月31日上午12:14:46
	 * 
	 * 开发人员：gl
	 * 
	 * @param todoId
	 * @param userId
	 * @param status
	 * @return TodoInfo
	 * 
	 * </pre>
	 *
	 */
	public TodoInfo getTodo(@Param("todoId")Integer todoId,@Param("userId")Integer userId,@Param("status")int status);
	/**
	 * 
	 * <pre>
	 * 方法说明：update todo 
	 * 
	 * 开发时间：2016年12月31日上午12:15:08
	 * 
	 * 开发人员：gl
	 * 
	 * @param todo 
	 * @param userId
	 * @return int success count
	 * 
	 * </pre>
	 *
	 */
	public int updateTodo(@Param("todo")Todo todo, @Param("userId")Integer userId);
	
	
	
}
